package com.neusoft.util;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Properties;

@RestController
public class EmilUtil {

    @Value("${emil.sendAccount}")
    private String sendAccount;

    @Value("${emil.sendPassword}")
    private String sendPassword;

    @Value("${emil.smtpHost}")
    private String smtpHost;

    @Value("${emil.staffName}")
    private String staffName;

    public void sendEmil(@RequestBody Emil emil) throws UnsupportedEncodingException, MessagingException {
        System.out.println(emil.text);
        // 参数配置，⽤于连接邮件服务器
        Properties props = new Properties();
        // 使⽤协议
        props.setProperty("mail.transport.protocol", "smtp");
        // 发件⼈邮箱的 SMTP 服务器地址
        props.setProperty("mail.smtp.host", smtpHost);
        // 需要请求认证
        props.setProperty("mail.smtp.auth", "true");
        // 创建会话对象，⽤于与邮箱服务器交互


        Session session = Session.getInstance(props);
        // 设置为debug模式，在控制台中可以查看详细的发送⽇志
        session.setDebug(true);
        // 创建⼀封邮件


        MimeMessage message = new MimeMessage(session);
        // 设置发件人 邮箱, 显示昵称, 昵称的字符集编码
        message.setFrom(new InternetAddress(sendAccount, staffName, "UTF-8"));
        // 设置收件人
        message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(emil.receiveAccount, emil.name, "UTF-8"));
        // 设置邮件主题
        message.setSubject(emil.title, "UTF-8");
        // 设置正文内容，指定为HTML格式
        message.setContent(emil.text, "text/html;charset=UTF-8");
        // 设置显示发件时间
        message.setSentDate(new Date());
        // 保存设置
        message.saveChanges();
        // 根据session获取邮件传输对象


        Transport transport = session.getTransport();
        // 连接邮件服务器
        transport.connect(sendAccount, sendPassword);
        // 发送邮件
        transport.sendMessage(message, message.getAllRecipients());
        // 关闭连接
        transport.close();
    }


}
